#include "../process.h"
#include "../util.h"

#define BATCH 200000

//inline bool is_valid(string str)
//{
//	for(int i = 0; i < str.length(); ++ i)
//	{
//		if(str[i] >= 'a' && str[i] <= 'z')
//			return true;
//	}
//	return false;
//}
//
//int main(int argc, const char* argv[])
//{
//	fstream log(argv[1], fstream::in);
//	fstream valid_file(argv[2], fstream::out);
//	fstream invalid_file(argv[3], fstream::out);
//	int valid = 0, invalid = 0;
//	cout << "start\n";
//	while(!log.eof())
//	{
//		string line;
//		getline(log, line);
//		if(line.length() == 0)continue;
//		vector<string> v = util::tokenize(line, "\t");
//		string query = v[1];
//		if(is_valid(query))
//		{
//			valid ++; 
//			valid_file << line << endl;
//		}
//		else
//		{
//			invalid ++;
//			invalid_file << line << endl;
//		}
//	}
//	cout << "valid\t" << valid << "\tinvalid\t" << invalid 
//		<< "\ntotal\t" << (valid+invalid) << endl;
//	log.close();
//	valid_file.close();
//	invalid_file.close();
//	return 0;
//}

//int main(int argc, const char* argv[])
//{
//	fstream log(argv[1], fstream::in);
//	int count = 0;
//	cout << "start\n";
//	while(!log.eof()){
//		count ++;
//		string line;
//		getline(log, line);
//	}	
//	cout << "count\t" << count << endl;
//	log.close();
//	return 0;
//}

//int main(int argc, const char* argv[])
//{
//	string file_name(argv[1]);
//	fstream log(file_name, fstream::in);
//	fstream out_head(file_name + ".head.txt", fstream::out);
//	fstream out_tail(file_name + ".tail.txt", fstream::out);
//	int head_count = 0, tail_count = 0, thr = atoi(argv[2]);
//	cout << "start\n";
//	while(!log.eof())
//	{
//		string line;
//		getline(log, line);
//		int del = line.find("\t");
//		int freq = atoi(line.substr(0, del).c_str());
//		if(freq >= thr){
//			head_count ++ ;
//			out_head << line << endl;
//		}
//		else{
//			tail_count ++;
//			out_tail << line << endl;
//		}
//	}
//	cout << "Total\t" << head_count +  tail_count<< endl;
//	cout << "Head query\t" << head_count << endl;
//	cout << "Tail query\t" << tail_count << endl;
//	log.close();
//	out_head.close();
//	out_tail.close();
//	return 0;
//}

int main(int argc, const char* argv[])
{
	string file_name(argv[1]);
	fstream log(file_name, fstream::in);
	fstream out_click(file_name + ".click.txt", fstream::out);
	fstream out_non_click(file_name + ".non_click.txt", fstream::out);
	int count = 0;
	cout << "start\n";
	int click = 0, non_click = 0;
	while(!log.eof()){	
		string line;
		getline(log, line);
		vector<string> v = util::tokenize(line, "\t");
		if(v.size() > 2){
			click ++;
			out_click << line << endl;
		}
		else if(v.size() == 2){
			non_click ++;
			out_non_click << line << endl;
		}
	}	
	cout << "Total Query\t" << click + non_click << endl;
	cout << "With Click\t" << click << endl;
	cout << "Without Click\t" << non_click << endl;
	log.close();
	return 0;
}